package com.shujia.scala

import java.io.{BufferedReader, FileReader}

import scala.io.{BufferedSource, Source}

object Demo3Base {
  def main(args: Array[String]): Unit = {

    /**
      * 变量
      *
      * 自动推断变量的类型
      *
      * var  ： 变量
      * val  : 常量
      *
      * 尽量使用val
      *
      */


    var j = 10
    var i: Int = 10

    //修改变量的值
    i = 100

    println(i)

    val a = 100

    //常量不能在指向其他对象
    //a = 200


    /**
      * 类型转换
      *
      */


    val s: String = "100"

    //java中类型转换
    println(Integer.parseInt(s))


    //scala中的方式
    val is: Int = s.toInt

    val l: Long = s.toLong


    println("int:" + is)


    //如果类型不匹配会出现异常
    //val ai: Int = "a".toInt


    /**
      *
      * 文件读写
      *
      */

    //java方式

    val fileReader = new FileReader("scala/data/students.txt")

    val bufferedReader = new BufferedReader(fileReader)

    var line = bufferedReader.readLine()

    while (line != null) {

      println(line)

      //读取下一行
      line = bufferedReader.readLine()
    }


    println("=" * 100)


    //scala读取文件的方式
    val file: BufferedSource = Source.fromFile("scala/data/students.txt")

    //读取所有行
    val lines: Iterator[String] = file.getLines()

    //遍历迭代器
    for (elem <- lines) {
      println(elem)
    }


    //定义一个列表，这是一个不可变的列表
    val list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)


    //循环，变量的类型自动推断
    for (i <- list) {
      println(i)
    }

    println("=" * 100)

    //通过下标变量集合
    var v = 0
    while (v < list.length) {

      //指定下标获取元素
      println(list(v))
      v += 1
    }

    println("=" * 100)

    //使用面向函数的方式
    list.foreach(println)



    //字符串拼接

    var sss = "java" + "spark" + "hadoop"


    val stringBuilder = new StringBuilder
    stringBuilder.append("jva")
    stringBuilder.append("spark")
    stringBuilder.append("hadoop")


    var jj = "java"
    var ii = 10

    //scala中字符串拼接
    //底层也是StringBuilder
    var str = s"java\thadoop\t$jj\t$ii"


  }
}
